﻿2AY для БК. Реализованные варианты.


На момент написания этого текста существует три варианта подключения спаренных чипов AY-3-8910 (YM2149F) к БК-0011(0010).


Первый вариант. Маски разрядов 14. и 15. порта 177714.


Основан на переключении AY при помощи старших разрядов 14. и 15. порта 177714. Суть в следующем. Поскольку обмен с AY
происходит путем отправки пары "регистр AY (слово)- данные (байт)", то в момент отправки слова с номером регистра AY
один из битов 14. или 15. устанавливается, как маска, что позволяет подключить нужный AY. Например, нужно отправить
данные регистра 7 одного из AY в 177714:

	MOV #100007, R0		;УСТАНОВИЛИ МАСКУ В РАЗРЯД 15(ВЫБРАЛИ НУЖНЫЙ AY), ПОМЕСТИЛИ НОМЕР РЕГИСТРА AY В МЛАДШИЙ БАЙТ
	COM R0			;ДАННЫЕ ДЛЯ ОТПРАВКИ В 177714 ИНВЕРСНЫЕ
	MOV R0, @#177714	;ОТПРАВИЛИ СФОРМИРОВАННОЕ СЛОВО И УСТАНОВИЛИ ДЛЯ ЗАПИСИ РЕГИСТР 7 ТРЕБУЕМОГО AY
	MOV #100005, R0		;ТЕПЕРЬ НУЖНО ОТПРАВИТЬ НАПРИМЕР ЗНАЧЕНИЕ 5 В УСТАНОВЛЕННЫЙ ВЫШЕ РЕГИСТР ПОДКЛЮЧЕННОГО AY
	COMB R0			;ИНВЕРСНЫЕ ДАННЫЕ ДЛЯ ОТПРАВКИ В 177714
	MOVB R0, @#177714	;ОТПРАВИЛИ БАЙТ И ЗАПИСАЛИ ЗНАЧЕНИЕ В УСТАНОВЛЕННЫЙ РЕГИСТР ПОДКЛЮЧЕННОГО AY

Для записи в регистр другого AY программный код будет аналогичным, только вместо MOV #100000,R0 следует указать MOV #40000,R0
т.е. установить 14.-й разряд.

Данный вариант подключения обратно совместим, т.к. все legacy ("старые") проигрыватели при отправке данных в 177714 ничего не
записывают в старший байт, и соответственно не трогают биты 14. и 15. Единственное "но" при этом оба AY "играют" параллельно
одно и то же. На слух это иногда звучит оригинально, но для истинных ценителей желательно предусмотреть возможность физического
отключения одного из AY.


Второй вариант. Стандарт TurboSound.


Плата TurboSound спроектирована и реализована так, что ее можно подключить на место существующего чипа AY-3-8910 (YM2149F)
и она будет работать как с legacy ("старыми") проигрывателями так и с новыми, которые поддерживают способ переключения двух AY.
Этот способ подключения очень прост. Что бы переключить AY потребуется отправка слова в порт 177714 с номером несуществующего
регистра AY. В стандарте TurboSound этими регистрами выбраны значения 255. и 254. Программно это выглядит достаточно просто.
Перед отправкой основных данных управления регистрами AY в порт 177714 пишется подключение нужного AY:

	MOV #255., R0		;ДЛЯ ПОДКЛЮЧЕНИЯ AY#1 УСТАНОВИМ ЗНАЧЕНИЕ 255. (ИЛИ 254. ДЛЯ AY#2)
	COM R0			;ДАННЫЕ ДЛЯ ОТПРАВКИ В 177714 ИНВЕРСНЫЕ
	MOV R0, @#177714	;ОТПРАВИЛИ СЛОВО И УСТАНОВИЛИ НУЖНЫЙ AY

	...			;ДАЛЕЕ ИДЕТ ОБЫЧНАЯ ОТПРАВКА ДАННЫХ ДЛЯ AY

Для legacy проигрывателей все остается по старому. Т.е. после RESET на БК, порт 177714 устанавливается в инверсную -1,
что соответствует значению 255. или подключению AY#1.


Третий вариант. Внешее устройство AZBK.


В AZBK произошел полный отказ от использования 177714 и были реализованы новые порты для управления AY (при этом поддержка
177714 сохранена). Это:

	177172	- для указания номера регистра AY#1
	177173	- для записи данных указанного в 177172 номера регистра AY#1
	177174	- для указания номера регистра AY#2
	177175	- для записи данных указанного в 177174 номера регистра AY#2

Все порты байтовые! Кроме этого, для управления AY теперь не требуется инверсия передаваемых данных, а порты доступны как
для записи, так и для чтения.

Запись данных в нужные AY выглядит просто:

	MOVB #2, @#177172	;УСТАНОВИЛИ РЕГИСТР 2 AY#1
	MOVB #124, @#177173	;ОТПРАВИЛИ ДАННЫЕ В УКАЗАННЫЙ ВЫШЕ РЕГИСТР AY#1

	MOVB #5, @#177174	;УСТАНОВИЛИ РЕГИСТР 5 AY#2
	MOVB #30, @#177175	;ОТПРАВИЛИ ДАННЫЕ В УКАЗАННЫЙ ВЫШЕ РЕГИСТР AY#2
	

Все указанные реализации были проверены с помощью написанного мной универсального проигрывателя, который поддерживает все
варианты:

	https://disk.yandex.ru/d/Rv26trQndwKexw



2022, Владимир 'KUVO' Кутяков / CSI
